iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
AI & Data

Object Detection and Image Processing with Python系列 第 23

《第23天》YOLOX本地端訓練(Windows)

  • 分享至 

  • xImage
  •  

環境安裝

  1. 開啟Pycharm新專案:

    1.1 點擊New Project開啟新專案

    1.2 點擊New enviroment using,選擇Vitualenv後輸入專案名稱,再點擊Create。

  2. 到Github下載Megvii-BaseDetection/YOLOX tag 0.2.0

  3. 解壓縮後將YOLOX-main資料夾移動到Pycharm專案資料夾內,並更名為YOLOX。

  4. 在Pycharm內點選Terminal,並依序輸入以下指令

    4.1 進入YOLOX資料夾:cd .\YOLOX\

    4.2 安裝需求套件:pip install -r requirements.txt

    4.3 安裝tensorboard:pip install tensorboard

    4.4 安裝CUDA與Torch

    • 我是使用RTX2060s,測試可行的版本如下。pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

    4.5 部署YOLOX環境:python setup.py develop

    • setup成功

    • setup失敗

      • 若提示No CUDA runtime is found, using CUDA_HOME='C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2',可以嘗試其他版本的「CUDA與Torch」。

      • 可嘗試Torch官網的安裝指令pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113


模型推論(demo.py檔)

  1. 預訓練模型YOLOX-s權重

    1.1 下載預訓練模型YOLOX-s權重

    1.2 放到YOLOX資料夾,用以執行demo.py測試是否部署環境成功。

  2. 將assets資料夾內的dog照片複製成8張,可測試單張及多張照片的GPU推論速度。

  3. 在Terminal輸入推論指令

    3.1 單張照片gpu推論:python tools/demo.py image -f exps/default/yolox_s.py -c yolox_s.pth --path assets/dog1.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

    • 執行結果:載入模型+1張圖片推論,花費了1.8655秒。

    • 推論結果

    3.2 多張照片gpu推論:python tools/demo.py image -f exps/default/yolox_s.py -c yolox_s.pth --path assets/ --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

    • 執行結果

      • 載入模型+第1張圖片推論,花費7.7089秒
      • 第2~8張圖片,1張圖片推論平均時間為0.0142秒。

    • 推論結果

    3.3 參數說明

    • -f 後面放參數設定的檔案路徑,如:exps/default/yolox_s.py
    • -c 後面放推論時讀取的weight檔案路徑,如:yolox_s.pth
    • --path 後面放要推論的圖片或資料夾路徑,如:assets/dog.jpg
    • --conf 後面放confidence的閾值,如:0.25
    • --nms 後面放非Non-Maximum Suppression的閾值,如:0.45
    • --tsize 待推論圖片輸入模型的尺寸,如:640
    • --save_result 是否儲存圖片推論結果,如:True
    • --device 後面放CPU或GPU,代表使用什麼設備推論,如:gpu

模型訓練(train.py檔)

  1. COCO格式訓練

    1.1 資料集下載

    • 下載coco128資料集

    • 將coco128資料集解壓縮,並移到YOLOX下的datasets資料夾內。

    • 資料集結構如下圖。

    1.2 下載預訓練模型YOLOX-s權重,並放到YOLOX資料夾內。

    1.3 yolox-s.py參數檔

    • 開啟yolox-s.py:./YOLOX/exps/example/custom/yolox-s.py

    • 確認參數是否正確。

      # 資料集與COCO格式標籤路徑
      self.data_dir = "datasets/coco128"
      self.train_ann = "instances_train2017.json"
      self.val_ann = "instances_val2017.json"
      
      # 資料集類別數量(coco128有71個類別)
      self.num_classes = 71
      
      # 模型迭代次數
      self.max_epoch = 300
      
      # 影響資料前處理速度,通常使用4或8
      self.data_num_workers = 4
      

    1.4 coco_classes.py:將COCO_CLASSES = ( ) 中的類別,修改成coco128的71個類別。

    1.3 執行訓練:python tools/train.py -f exps/example/custom/yolox_s.py -d 0 -b 16 --fp16 -o -c yolox_s.pth

    1.4 Demo測試:python tools/demo.py image -f exps/example/custom/yolox_s.py -c YOLOX_outputs/coco128/best_ckpt.pth --path assets/ --conf 0.25 --nms 0.5 --tsize 640 --save_result --device gpu


補充

  1. 在Windows系統上,若下載Megvii-BaseDetection/YOLOX tag 0.3.0進行部署,模型訓練第一個回合後,調用yolox/evaluators/coco_evaluator.py計算AP時,可能會出現下列錯誤。
Using C:\Users\88691\AppData\Local\torch_extensions\torch_extensions\Cache\py37_cu113 as PyTorch extensions root...
C:\Users\88691\PycharmProjects\YOLOX\venv\lib\site-packages\torch\utils\cpp_extension.py:316: UserWarning: Error checking compiler version for cl: [WinError 2] 系統找不到指定的檔案。
  warnings.warn(f'Error checking compiler version for {compiler}: {error}')
Emitting ninja build file C:\Users\88691\AppData\Local\torch_extensions\torch_extensions\Cache\py37_cu113\fast_cocoeval\build.ninja...
資訊: 找不到提供模式的檔案。
  • 異常訊息

  1. 上述情形,推測可能是python轉換成c++時出現未知的編碼錯誤,提供暫時解決方法如下。
  • yolox/evaluators/coco_evaluator.py修改前

    try:
        from yolox.layers import COCOeval_opt as COCOeval
    except ImportError:
        from pycocotools.cocoeval import COCOeval
    
  • yolox/evaluators/coco_evaluator.py修改後

    from pycocotools.cocoeval import COCOeval
    
  • 修改後,直接從pycocotools套件中呼叫COCOeval,跳過異常階段順利計算AP。

  • 另外一個可能解決方法


小結

下一站,我們前往「YOLOv7本地端訓練(Windows)」,分享如何設置YOLOv7環境,並進行訓練與推論。

讓我們繼續看下去...


參考資料

  1. Megvii-BaseDetection/YOLOX
  2. 如何使用自己的資料集訓練 YOLOX
  3. YOLOX 環境搭建 | 測試 | COCO訓練複現 【️YOLOX 實戰️】

上一篇
《第22天》YOLOR本地端訓練(Windows)
下一篇
《第24天》YOLOv7本地端訓練(Windows)
系列文
Object Detection and Image Processing with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言